/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tt.conn;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author PARDmx
 */
public class RegistraDatos extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        int idv = Integer.parseInt(request.getParameter("idv"));
        ArrayList<String> val = new ArrayList<String>();
        ArrayList<String> f = new ArrayList<String>();
        ArrayList<String> res = new ArrayList<String>();
        String id;
        String name;
        String user;
        String email;
        String gender;
        String bday;
        String acces_token;
        //String user_name;
        //String pass;
        String rol;
        HttpSession session;

        //ConexionDBM con;
        ConexionDBP con;

        /*Dependiendo del idv (id de vista) si es 1 el servlet se llamo desde la pagina del login por lo que hace el registro de datos en la BD 
         si es 2 se invoco el servlet desde el registro de analista y se van a almacenar los datos en la BD*/
        switch (idv) {
            case 1:
                //con = new ConexionDBM();
                con = new ConexionDBP();
                id = request.getParameter("id");
                name = request.getParameter("name");
                user = request.getParameter("user");
                email = request.getParameter("email");
                gender = request.getParameter("gender");
                bday = request.getParameter("bday");
                acces_token = request.getParameter("at");
                rol = "0";
                session = request.getSession();

                if (con.conectarDB() == 1) {
                    out.write("<p>Error al conectar a la BD</p>");
                } else {
                    val.add(id);
                    val.add(name);
                    val.add(acces_token);
                    val.add(rol);                    
                    val.add(user);
                    val.add(email);
                    val.add(gender);
                    val.add(bday);                    

                    f.add("id_user");
                    f.add("nombre");
                    f.add("access_token");
                    f.add("rol");
                    f.add("usuario");
                    f.add("correo");
                    f.add("genero");
                    f.add("fec_nac");                    
                    
                    res = con.usuarioExiste(id);

                    if (res.isEmpty()) { //Si la busqueda regresa vacia el usuario es nuevo
                        //out.println("<p>Error al ejecutar el procedimiento</p>");
                        //if (con.insertDBU("user_face", f, val) == 1) {  //Inserta el usuario en la base de datos y redirecciona a main.jsp
                        String r = con.insertDB("user_face", f, val);
                        if(!r.equals("ok")){
                            out.write("<p>Error al insertar 1 " + r + " </p>");

                        } else {
                            //out.println("<p>Nuevo usuario registrado</p>");
                            session.setAttribute("user_data", val);
                            out.write("mainuf.jsp");
                            //response.sendRedirect("mainuf.jsp");
                        }
                    } else {
                        if (res.get(0).toString().equals(id)) {     //Si el usuario ya existe en la BD 
                            //out.println("<p>El usuario ya existe en la BD</p>");
                            if (res.get(1).toString().equals("1")) {    //Verifica si el usuario es administrador y redirige a login_admin.jsp
                                //val.add("1");
                                val.add(3, "1");
                                session.setAttribute("user_data", val);
                                out.write("main.jsp");
                                //response.sendRedirect("main.jsp");
                            } 
                            if (res.get(1).toString().equals("2")){
                                val.add(3, "2");
                                session.setAttribute("user_data", val);
                                out.write("mainan.jsp");                                
                            } 
                            if (res.get(1).toString().equals("0")) {
                                session.setAttribute("user_data", val);
                                out.write("mainuf.jsp");
                                //response.sendRedirect("mainuf.jsp");
                            }

                        } else {
                            String d = con.insertDB("user_face", f, val);
                            //if (con.insertDBU("user_face", f, val) == 1) {
                            if(!d.equals("ok")){
                                out.write("<p>Error al insertar 2 " + d + " </p>");

                            } else {
                                //out.println("<p>Nuevo usuario registrado</p>");
                                session.setAttribute("user_data", val);
                                out.write("mainuf.jsp");
                                //response.sendRedirect("mainuf.jsp");
                            }
                        }

                    }

                    con.desconectarDB();
                }

                break;

            case 2:
                //con = new ConexionDBM();
                con = new ConexionDBP();
                id = request.getParameter("id");
                rol = request.getParameter("rol");
                
                if (con.conectarDB() == 1) {
                    out.write("<p>Error al coonectar</p>");
                } else {
                    if (con.updateAT("user_face", "rol", rol, id) == 1) {
                        out.write("<p>Error al insertar</p>");
                    } else {
                        out.write("<p>Analista registrado</p>");
                    }
                    con.desconectarDB();
                }
                break;

        }



    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
